//移除链表元素
import linkListDefine.ListNode;//引入了链表节点定义


/**
 *移除链表元素，是对链表元素进行操作的一个基础，将指定的值的节点进行删除
 * 技巧：在进行循环进行删除时，最好是添加一个虚拟头结点，将所有节点的操作进行统一，就不必区分头结点，而需要单独处理头结点
 */
public class deleteElementLink {
    public ListNode delete(int val,ListNode node){//传入一个需要删除节点，第二个是传入链表的头结点
        ListNode start = new ListNode(11,node);//初始化一个虚拟头结点方便进行删除
        ListNode temp  = start;//用来进行循环操作；
        while(temp!=null){
            if(temp.next.data==val){
                temp.next = temp.next.next;
            }
            temp = temp.next;
        }

        temp = start.next;
        while(temp!=null){//这是只是用来输出链表里面的数据
            System.out.println(temp.data);
            temp = temp.next;
        }
        return node;
    }

    public static void main(String[] args) {
        int[] list = new int[]{1,2,3,4,5,6,7};
        //建立链表，从后往前进行建立链表
        ListNode a = new ListNode(list[list.length-1]);
        for(int i=list.length-2;i>=0;i--){
            ListNode b = new ListNode(list[i],a);
            a = b;
        }
        var main = new deleteElementLink();
        main.delete(7,a);

    }
}
